package marketplace.jpa.entities;

import java.io.Serializable;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import marketplace.jpa.datas.DataVersion;

@Entity
public class Version implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="idVersion", nullable=false, unique=true)
	private int idVersion;
	@Column(name="numero", nullable=false)
	private int numero;
	private String nombre;
	private Double precio;
	private Double tamanio;
	private String archivo;
	private int cantDescragas;
	private String estadoAprobacion;
	@ManyToOne
	private ContenidoDigital contDig;
	
	private Date fechaCreacion;
	
	
	//// CONSTRUCTORES /////////////////////////////////////////////////////////////////
	
	public Version() { super(); }
	
	public Version(DataVersion dVer) {
		this.idVersion = dVer.getIdVersion();
		this.numero = dVer.getNumero();
		this.nombre = dVer.getNombre();
		this.precio = dVer.getPrecio();
		this.tamanio = dVer.getTamanio();
		this.archivo = dVer.getArchivo();
		this.cantDescragas = dVer.getCantDescragas();
		this.estadoAprobacion = dVer.getEstadoAprobacion();
		this.contDig = dVer.getContDig().toContenidoDigital();
		this.fechaCreacion = dVer.getFechaCreacion();
		
	}
	
	public Version(int numero, String nombre, Double precio, String estadoAprobacion, String archivo, Double tamanio, ContenidoDigital contDig) {
		super();
		//this.idVersion = idVersion;
		this.numero = numero;
		this.nombre = nombre;
		this.precio = precio;
		this.tamanio = tamanio;
		this.archivo = archivo;
		this.estadoAprobacion = estadoAprobacion;
		this.contDig = contDig;
		SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
		java.util.Date fecha = new java.util.Date();
		/*System.out.println("Constructor Version: date: fecha : " + new SimpleDateFormat("dd/MM/yyyy").format(fecha));*/
		try {
			java.util.Date save = formato.parse(formato.format(fecha));
			this.fechaCreacion = new java.sql.Date(save.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		System.out.println("Constructor Version:"+this.fechaCreacion );
	}

	//// GETERS & SETERS /////////////////////////////////////////////////////////////////
	
	public int getIdVersion() { return idVersion; }
	public void setIdVersion(int idVersion) { this.idVersion = idVersion; }
	public int getNumero() { return numero; }
	public void setNumero(int numero) { this.numero = numero; }
	public String getNombre() { return nombre; }
	public void setNombre(String nombre) { this.nombre = nombre; }
	public Double getPrecio() { return precio; }
	public void setPrecio(Double precio) { this.precio = precio; }
	public Double getTamanio() { return tamanio; }
	public void setTamanio(Double tamanio) { this.tamanio = tamanio; }
	public int getCantDescragas() { return cantDescragas; }
	public void setCantDescragas(int cantDescragas) { this.cantDescragas = cantDescragas; }
	public String getEstadoAprobacion() { return estadoAprobacion; }
	public void setEstadoAprobacion(String estadoAprobacion) { this.estadoAprobacion = estadoAprobacion; }
	public ContenidoDigital getContDig() { return contDig; }
	public void setContDig(ContenidoDigital contDig) { this.contDig = contDig; }

	public Version dataToContenido(DataVersion dVer) {
		this.idVersion = dVer.getIdVersion();
		this.numero = dVer.getNumero();
		this.nombre = dVer.getNombre();
		this.precio = dVer.getPrecio();
		this.tamanio = dVer.getTamanio();
		this.archivo = dVer.getArchivo();
		//this.cantDescragas = dVer.getCantDescragas();
		this.estadoAprobacion = dVer.getEstadoAprobacion();
		//this.contDig = new ContenidoDigital(dVer.getContDig());
		return this;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}

	public String getArchivo() {
		return archivo;
	}

	public void setArchivo(String archivo) {
		this.archivo = archivo;
	}

	
}
